package com.ray.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.ray.bean.FileManagerBean;
import com.ray.bean.GradeBean;
import com.ray.bean.TableData;
import com.ray.bean.WorkOrderBean;
import com.ray.bean.WorkOrderMachineBean;
import com.ray.bean.WorkOrderMaterialPriceDetail;

/**
 * 工单维修Mapper
 * @author Shensg
 * 2018年1月24日
 */
public interface WorkOrderMapper {
	/**
	 * 获取工单维修配置表 列表
	 * @param map
	 * @param workOrderMachineBean
	 * @return
	 */
	List<WorkOrderMachineBean> getConfigList(@Param("map")Map map,@Param("bean")WorkOrderMachineBean workOrderMachineBean);
	/**
	 * 获取工单维修配置表 列表数量
	 * @param map
	 * @param workOrderMachineBean
	 * @return
	 */
	int getConfigListTotal(@Param("map")Map map,@Param("bean")WorkOrderMachineBean workOrderMachineBean);
	/**
	 * 修改工单维修配置信息
	 * @param map
	 * @param bean
	 * @return
	 */
	int updateConfig(@Param("map")Map map, @Param("bean")WorkOrderMachineBean bean);
	/**
	 * 增加工单维修配置信息
	 * @param map
	 * @param bean
	 * @return
	 */
	int addConfig(@Param("map")Map map, @Param("bean")WorkOrderMachineBean bean);
	/**
	 * 保存工单申请信息
	 * @param map
	 * @param bean
	 * @return
	 */
	int saveWorkOrderApply(@Param("map")Map map, @Param("bean")WorkOrderBean bean);
	/**
	 * 通过机器id获取工单
	 * @param map
	 * @param bean
	 * @return
	 */
	WorkOrderBean getApplyWorkOrderByMachineId(@Param("map")Map map, @Param("bean")WorkOrderBean bean);
	/**
	 * 通过工单id获取工单
	 * @param map
	 * @param bean
	 * @return
	 */
	WorkOrderBean getApplyWorkOrderById(@Param("map")Map map, @Param("bean")WorkOrderBean bean);
	/**
	 * 设备维修配置信息通过id
	 * @param map
	 * @param bean
	 * @return
	 */
	WorkOrderMachineBean getConfigById(@Param("map")Map map, @Param("bean")WorkOrderMachineBean bean);
	/**
	 * 更新工单指派人
	 * @param map
	 * @param bean
	 * @return
	 */
	int updateWorkOrderWorkName(@Param("map")Map map, @Param("bean")WorkOrderBean bean);
	/**
	 * 更新维修结果记录
	 * @param map
	 * @param bean
	 * @return
	 */
	int updateWorkOrderWorkRepaireInfo(@Param("map")Map map, @Param("bean")WorkOrderBean bean);
	/**
	 * 更新用户评价
	 * @param map
	 * @param bean
	 * @return
	 */
	int updateWorkOrderCustEvaluation(@Param("map")Map map, @Param("bean")WorkOrderBean bean);
	/**
	 * 获取公司用户表
	 * @param map 
	 * @return
	 */
	List<Map> getCompanyUserTree(@Param("map")Map map);
	/**
	 * 获取公司用户表
	 * @param map 
	 * @return
	 */
	List<Map> getOrderTree(@Param("map")Map map);
	/**
	 * 更新申请订单状态
	 * @param map
	 * @param bean
	 * @return
	 */
	int updateApplyOrderStatus(@Param("map")Map map, @Param("bean")WorkOrderBean bean);
	/**
	 * 更新用户补充说明
	 * @param map
	 * @param bean
	 * @return
	 */
	int updateApplyOrderRemark(@Param("map")Map map, @Param("bean")WorkOrderBean bean);
	/**
	 * 获取工单申请列表
	 * @param map
	 * @return
	 */
	List<WorkOrderBean> getApplyList(@Param("map")Map map);
	/**
	 * 获取工单申请列表总数
	 * @param map
	 * @return
	 */
	int getApplyListTotal(@Param("map")Map map);
	/**
	 * 通过用户名 公司 或则用户id 公司获取用户id
	 * @param company
	 * @param userName
	 * @param userId
	 * @param map
	 * @return
	 */
	List<Map<String,String>> getOpenId(@Param("userName")String userName, @Param("userId")String userId, @Param("map")Map map);
	/**
	 * 获取用户信息
	 * @param map
	 * @return
	 */
	Map getUserInfo( @Param("map")Map map);
	/**
	 * 更新客户评价 维修完毕1天内评论
	 */
	void updateWorkOrderForOpinion();
	/*查询用户是否启用*/
	int checkUserIsUse(@Param("company")String company, @Param("userName")String userName);
	/*查询维修物料报价*/
	List<Map<String, Object>> getMaterialPriceList( Map map);
	/*查询维修物料报价数量*/
	int getMaterialPriceListTotal( Map map);
	/*插入或则更新维修报价*/
	void updateMaterialPrice(Map map);
	/*通过关联订单编号获取物料价目*/
	List<Map> getMaterialPriceByOrderNo(Map map);
	/*维修报价明细增加*/
	int addWorkRepairPrice(WorkOrderMaterialPriceDetail bean);
	/*通过ID删除报价明细*/
	int updateWorkRepairPriceById(WorkOrderMaterialPriceDetail bean);
	/* 获取维修报价明细清单*/
	List<WorkOrderMaterialPriceDetail> getWorkRepairPriceList(WorkOrderMaterialPriceDetail bean);
	/* 二次更换指派人*/
	int updateWorkOrderWorkNameTwice(@Param("map")Map map, @Param("bean")WorkOrderBean bean);
	/*更新结算价格*/
	void updateBalancePrice(@Param("id")String id, @Param("balancePrice")String balancePrice);
	/**
	 * 获取维修汇总看板数据
	 * nate
	 * @param map
	 * @return
	 */
	List<GradeBean> getWorkRepairSummary(Map map);
	/**
	 * 通过物联网卡查找设备
	 * @param internetThingsCard
	 * @return
	 */
	List<WorkOrderMachineBean> getWorkOrderMachineByInternetThingsCard(@Param("id")int id,@Param("internetThingsCard")String internetThingsCard);
	/**
	 * 通过物联网卡编号获取维修设备编号
	 * @param internetThingsCard
	 * @return
	 */
	String getIdByInternetThingsCard(@Param("internetThingsCard")String internetThingsCard);
	/**
	 * 获取本公司的异常警报类型
	 * @param map
	 * @return
	 */
	List<String> getEquimentAlarmTypeName(Map map);
	/**
	 * 获取设备错误吗
	 * @param internetThingsCard
	 * @return
	 */
	Map<String, Object> getAlarmCodeAndMsg(@Param("internetThingsCard")String internetThingsCard);
	/**
	 * 批量修改设备维修主管和技工
	 */
	void updateWorkMachineManagerAndWorksBatch(Map map);
	/**
	 * 获取每个月维修数据
	 * @param request
	 * @return
	 */
	List<Map> getWorkOrderApplyDataEveryMonth(Map map);
	
	/**
	 * 获取设备警报看板信息
	 * @param map
	 * @return
	 */
	List<GradeBean> getWorkAlarmSummary(Map map);
	/**
	 * 获取所有distinct表数据
	 * @param map
	 * @return
	 */
	List<Map> getDistrict(Map map);
	
	int insertOrUpdateWorkOrderSalaryType(@Param("map")Map map);
	
	int insertOrUpdateWorkOrderStarType(@Param("map")Map map);
	
	int insertOrUpdateWorkOrderVisitType(@Param("map")Map map);
	
	List<Map> getBasicInfoForSalary(@Param("map")Map map);
	
	List<Map> getBasicInfoForSalaryList(@Param("map")Map map);
	
	int getBasicInfoForSalaryCount(@Param("map")Map map);
	/**
	 * 工单回访
	 * @param map
	 * @param bean
	 */
	void updateWorkOrderApplyForVisit(@Param("map")Map map, @Param("bean")WorkOrderBean bean);
	/**
	 * 计算实际维修工单价格
	 * @param map
	 * @param bean
	 */
	void updateWorkOrderApplyForActualSalary(@Param("map")Map map, @Param("bean")WorkOrderBean bean);
	/**
	 * 通过工单完成时间计算维修薪资
	 * @param map
	 * @return
	 */
	List<TableData> getActualSalaryByWorkCompeleteTime(@Param("map")Map<String, Object> map);
	/**
	 * 获取在职维修人员列表
	 * @param request
	 * @return
	 */
	List<Map> getServiceWorkerList(@Param("map")Map<String, Object> map);
	
	void saveWorkOrderInfoForCustmerOperate(@Param("map")Map map);
	List getWorkOrderInfoForCustmerOperate(@Param("map")Map map);
	int getWorkOrderInfoForCustmerOperateTotal(@Param("map")Map map);
	
	
}
